package visiopuce.service;

import java.util.ArrayList;
import java.util.List;

import visiopuce.objets.Alteration;
import visiopuce.objets.Bande;
import visiopuce.objets.BaseMicrorem;
import visiopuce.objets.Biomedecine;
import visiopuce.objets.CNPLyon;
import visiopuce.objets.CNPOuest;
import visiopuce.objets.CNPc;
import visiopuce.objets.CategorieNonConformite;
import visiopuce.objets.Clone32k;
import visiopuce.objets.Clone4k;
import visiopuce.objets.CloneTilepath;
import visiopuce.objets.DGVVariants;
import visiopuce.objets.GeneNcbi;
import visiopuce.objets.Isca;
import visiopuce.objets.MarquePuce;
import visiopuce.objets.Phenotype;
import visiopuce.objets.Redon;
import visiopuce.objets.Secteur;
import visiopuce.objets.SiteFragile;
import visiopuce.objets.SousCategorieNonConformite;
import visiopuce.objets.TypeAnalyse;
import visiopuce.objets.TypeCausal;
import visiopuce.objets.TypeCotation;
import visiopuce.objets.TypeLogiciel;
import visiopuce.objets.TypeNonConformite;
import visiopuce.objets.TypePlanExp;
import visiopuce.objets.TypePrelevement;
import visiopuce.objets.TypePuce;
import visiopuce.objets.TypeQC;
import visiopuce.objets.TypeRendu;

public interface ReferentielService {

	ArrayList<TypePrelevement> getTypePrelevement();

	Secteur getSecteurByNom(String nom);

	ArrayList<TypeAnalyse> getTypeAnalyse(Integer integer);

	ArrayList<Biomedecine> getTypeIndication(String texte);

	ArrayList<TypeRendu> getTypeRendu(int nbStr);

	TypeRendu getTypeRenduById(int idTypeRendu);

	ArrayList<TypePrelevement> getTypePrelevementBySecteur(String texte);

	ArrayList<Phenotype> getPhentype(String libelle);

	ArrayList<TypeCotation> getTypeCotation(String libelle);
	
	ArrayList<TypePlanExp> getTypePlanExp();

	Secteur getSecteurByid(String string);

	TypeAnalyse getTypeAnalyseByid(String string);

	TypePrelevement getTypePrelevementByLibelle(String typePrel);

	long getTailleChromosome(String chromosome);

	List<Bande> getBandesByChromosome(String chromosome);

	TypePrelevement getTypePrelevementById(int parseInt);

	Biomedecine getTypeIndicationById(int parseInt);

	TypePuce getTypePuceById(int parseInt);

	TypeLogiciel getTypeLogicielById(int parseInt);

	TypePlanExp getTypePlanExpByid(int idTypePlanExp);

	List<GeneNcbi> getGeneNCBIByBorne(Alteration alt, int seuil);

	int getNbGeneNCBIByBorne(Alteration alt, int seuil);

	List<CNPOuest> getCNPOuestByBorne(Alteration alteration, int seuil);

	List<CNPLyon> getCNPLyonByBorne(Alteration alteration, int seuil);

	List<Clone4k> getClone4kByBorne(Alteration alteration, int seuil);

	List<Clone32k> getClone32kByBorne(Alteration alteration, int seuil);

	List<CloneTilepath> getCloneTilepathByBorne(Alteration alteration, int seuil);

	List<CNPc> getCNPcByBorne(Alteration alteration, int seuil);

	List<Redon> getRedonByBorne(Alteration alteration, int seuil);

	List<Isca> getIscaByBorne(Alteration alteration, int seuil);

	List<SiteFragile> getSiteFragileByBorne(Alteration alteration, int seuil);

	long[] getBornesByBande(String chromosome, String bande);

	// List<Microrem> getMicroRemByBorne(Alteration alteration);

	List<BaseMicrorem> getBaseMicroremByBorne(Alteration alteration, int seuil);

	List<GeneNcbi> getImprintingByBorne(Alteration alteration, int seuil);

	List<DGVVariants> getDGVVariantsByBorne(Alteration alteration, int seuil);

	List getProbeByBorne(Alteration alteration, int seuil);

	ArrayList<TypeCausal> getTypeCausals();

	List<TypePuce> getTypePuceByMarquePuce(MarquePuce marquePuceSel);

	List<TypeQC> getTypeQCByTypePuce(TypePuce typePuce);

	ArrayList<MarquePuce> getMarquePuce();

	List<Bande> getBandesByCNV(Alteration alt);

	ArrayList<TypeLogiciel> getTypeLogiciels();

	Phenotype getPhentypeById(int pheno);

	ArrayList<TypeAnalyse> getTypeAnalyseByPrelevement(Integer idPrelevement);

	String getProbeByAlteration(String chr, Long position, int idTypePuce);

	GeneNcbi getGeneNCBIBySymbol(String geneInteret);

	Biomedecine getTypeIndicationByLibelle(String libelle);

	String[] getCotationFromString(String text);

	TypeCotation getTypeCotationByLibelle(String string);

	Biomedecine getTypeIndicationByLibelleAndCategorie(String biomed, int catbiomed);

	ArrayList<Bande> getBandes();

	ArrayList<GeneNcbi> getGenesNCBI();

	TypeQC getTypeQCByTypePuceAndLibelle(TypePuce typePuce, String typeQCs);

	ArrayList<TypeNonConformite> getTypeNonConformite();

	ArrayList<CategorieNonConformite> getCategorieNonConfByIdTypeNonConformite(int idTypeNonConf);

	ArrayList<SousCategorieNonConformite> getSousCategorieNonConfByIdCategorieNonConformite(int idTypeNonConf);
}
